// 建一个数据模型
// 增删改查
// "insert into 数据表(字段1,字段1) values('" + 值1+ "','" + 值2+ "')"
// `insert into 数据表(字段1,字段1) values('${值1}','${值2}')`

// 导入操作数据库的配置
const db = require('../config/db');
// 问题： 记不住哪些sql语句怎么办? 
// 答案：
// 把常用的sql语句记一下
// 其他的 sql 语句像我们使用正则表达式一样 在网上搜索
// 在网上搜索指定功能sql语句复制粘贴调试 关键字（nodejs  mysql 功能）

// 导出当前数据模型
module.exports = {
    // 增加数据
    add(task_title, task_create_time) {
        // 返回执行插入数据的promise
        return new Promise((resolve, reject) => {
            // 生成ID
            let task_id = Math.random().toString().slice(2);
            // 编写sql语句
            let sql = `insert into db_task(task_title,task_create_time,task_id) values('${task_title}','${task_create_time}','${task_id}')`;
            // 执行sql语句
            db.query(sql).then(
                // 执行成功
                result => {
                    // 执行resolve方法 把执行成功的结果反馈给界面
                    resolve({ code: 200, msg: '添加数据成功', result })
                }
            )
                .catch(
                    // 执行失败
                    err => {
                        // 执行reject方法 把执行失败的结果反馈给界面
                        reject({ code: -1, msg: '添加数据失败', err })
                    }
                )
        })
    },
    // 查询数据
    list_all() {
        return new Promise((resolve, reject) => {
            // let sql = `select task_title, task_create_time from db_task`;
            let sql = `select * from db_task`;
            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '查询所有数据成功。', result })
                }
            )
                .catch(
                    err => {
                        reject({ code: -1, msg: '查询所有数据失败。', err });
                    }
                )
        })
    },
    // 查询数据
    detail(id) {
        return new Promise((resolve, reject) => {
            console.log("id:", id);
            let sql = `select task_title from db_task where id='${id}'`;
            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '查询指定数据成功。', result })
                }
            )
                .catch(
                    err => {
                        reject({ code: -1, msg: '查询指定数据失败。', err });
                    }
                )
        })
    },
    // 查询数据（分页）
    list_items(page, pageSize) {
        // 开始索引值
        let page_num = ((parseInt(page) - 1) * parseInt(pageSize))
        // 数量
        let page_size = (parseInt(pageSize))
        // 返回分页数据promise
        return new Promise((resolve, reject) => {
            // 查询指定数量的任务的sql语句
            let sql = `select * from db_task limit ${page_num} , ${page_size}`;
            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '获取分页数据成功。', result, page: page_num });
                }
            )
                .catch(
                    err => {
                        reject({ code: -1, msg: '获取分页数据失败。', err });
                    }
                )
        })
    },
    // 模糊查询
    search(keyword) {
        // 返回分页数据promise
        return new Promise((resolve, reject) => {
            // 通过关键字查询任务
            let sql = `select * from db_task  where task_title like '%${keyword}%'`;
            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '搜索关键字数据成功。', result });
                }
            )
                .catch(
                    err => {
                        reject({ code: -1, msg: '搜索关键字数据失败。', err });
                    }
                )
        })
    },
    // 修改数据
    modify(task_title, id) {
        // 返回分页数据promise
        return new Promise((resolve, reject) => {
            // 修改任务标题
            let sql = `update db_task set task_title= '${task_title}' where  id= '${id}'`;

            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '修改任务标题成功。', result });
                }
            )
                .catch(
                    err => {
                        reject({ code: -1, msg: '修改任务标题失败。', err });
                    }
                )
        })
    },
    //删除任务
    remove(id) {
        // 返回分页数据promise
        return new Promise((resolve, reject) => {
            // 删除数据
            let sql = `delete from db_task where id = '${id}'`

            db.query(sql).then(
                result => {
                    resolve({ code: 200, msg: '删除任务成功。', result });
                }
            )
            .catch(
                err => {
                    reject({ code: -1, msg: '删除任务失败失败。', err });
                }
            )
        })
    },
}